# 编译器设置
CXX := g++
CXXFLAGS := -std=c++17 -Wall -Wextra -O3 -MMD -MP
LDFLAGS := -lpthread  # 如果需要线程支持

# 源文件和目标
SRCS := $(wildcard *.cpp)
OBJS := $(SRCS:.cpp=.o)
TARGET := memory_allocator  # 或改为您想要的可执行文件名

# 默认目标
all: $(TARGET)

# 链接可执行文件
$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS)

# 通用编译规则
%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

# 包含自动生成的依赖
-include $(OBJS:.o=.d)

# 清理
clean:
	rm -f $(OBJS) $(TARGET) *.d

# 测试目标
test: $(TARGET)
	./$(TARGET)

.PHONY: all clean test